home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / test / test_pty.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2005-10-18  |  3KB  |  99 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.4)
  3.  
  4. import pty
  5. import os
  6. import sys
  7. import signal
  8. from test.test_support import verbose, TestFailed, TestSkipped
  9. TEST_STRING_1 = 'I wish to buy a fish license.\n'
  10. TEST_STRING_2 = 'For my pet fish, Eric.\n'
  11. if verbose:
  12.     
  13.     def debug(msg):
  14.         print msg
  15.  
  16. else:
  17.     
  18.     def debug(msg):
  19.         pass
  20.  
  21.  
  22. def test_basic_pty():
  23.     
  24.     try:
  25.         debug('Calling master_open()')
  26.         (master_fd, slave_name) = pty.master_open()
  27.         debug("Got master_fd '%d', slave_name '%s'" % (master_fd, slave_name))
  28.         debug('Calling slave_open(%r)' % (slave_name,))
  29.         slave_fd = pty.slave_open(slave_name)
  30.         debug("Got slave_fd '%d'" % slave_fd)
  31.     except OSError:
  32.         raise TestSkipped, 'Pseudo-terminals (seemingly) not functional.'
  33.  
  34.     if not os.isatty(slave_fd):
  35.         raise TestFailed, 'slave_fd is not a tty'
  36.     
  37.     debug('Writing to slave_fd')
  38.     os.write(slave_fd, TEST_STRING_1)
  39.     s1 = os.read(master_fd, 1024)
  40.     sys.stdout.write(s1.replace('\r\n', '\n'))
  41.     debug('Writing chunked output')
  42.     os.write(slave_fd, TEST_STRING_2[:5])
  43.     os.write(slave_fd, TEST_STRING_2[5:])
  44.     s2 = os.read(master_fd, 1024)
  45.     sys.stdout.write(s2.replace('\r\n', '\n'))
  46.     os.close(slave_fd)
  47.     os.close(master_fd)
  48.  
  49.  
  50. def handle_sig(sig, frame):
  51.     raise TestFailed, 'isatty hung'
  52.  
  53. old_alarm = signal.signal(signal.SIGALRM, handle_sig)
  54. signal.alarm(10)
  55.  
  56. try:
  57.     test_basic_pty()
  58. finally:
  59.     signal.alarm(0)
  60.     signal.signal(signal.SIGALRM, old_alarm)
  61.  
  62. debug('calling pty.fork()')
  63. (pid, master_fd) = pty.fork()
  64. if pid == pty.CHILD:
  65.     if not os.isatty(1):
  66.         debug("Child's fd 1 is not a tty?!")
  67.         os._exit(3)
  68.     
  69.     debug('In child, calling os.setsid()')
  70.     
  71.     try:
  72.         os.setsid()
  73.     except OSError:
  74.         debug('Good: OSError was raised.')
  75.     except AttributeError:
  76.         debug('No setsid() available ?')
  77.     except:
  78.         debug('An unexpected error was raised.')
  79.         os._exit(1)
  80.  
  81.     debug('os.setsid() succeeded! (bad!)')
  82.     os._exit(2)
  83.     os._exit(4)
  84. else:
  85.     debug('Waiting for child (%d) to finish.' % pid)
  86.     (pid, status) = os.waitpid(pid, 0)
  87.     res = status >> 8
  88.     debug('Child (%d) exited with status %d (%d).' % (pid, res, status))
  89.     if res == 1:
  90.         raise TestFailed, 'Child raised an unexpected exception in os.setsid()'
  91.     elif res == 2:
  92.         raise TestFailed, 'pty.fork() failed to make child a session leader.'
  93.     elif res == 3:
  94.         raise TestFailed, 'Child spawned by pty.fork() did not have a tty as stdout'
  95.     elif res != 4:
  96.         raise TestFailed, 'pty.fork() failed for unknown reasons.'
  97.     
  98. os.close(master_fd)
  99.